Integrated circuits (ICs) can be implemented to perform a variety of functions. Some ICs can be programmed to perform specified functions. One example of an IC that can be programmed is a field programmable gate array (FPGA). Another example of an IC that can be programmed is one that includes at least some portion of FPGA circuitry. FPGA circuitry typically includes an array of programmable tiles. Examples of programmable tiles (e.g., circuit blocks) include input/output blocks (IOBs), configurable logic blocks (CLBs), dedicated blocks of random access memory (or “block RAMs”), multipliers, digital signal processing blocks (DSPs), processors, clock managers, delay lock loops (DLLs), and so forth.
The programmable tiles typically include both programmable interconnect circuitry and programmable logic circuitry. The programmable interconnect circuitry typically includes a large number of interconnect lines of varying lengths interconnected by programmable interconnect points (PIPs). The programmable logic circuitry implements the logic of a user design using programmable elements that may include, for example, function generators, registers, arithmetic logic, and so forth.
The programmable interconnect and programmable logic circuitries are typically programmed by loading a stream of configuration data into internal configuration memory cells of the IC that define how the programmable elements included therein are configured. The configuration data can be read from memory (e.g., from an external PROM) or written into the programmable IC by an external device. The collective states of the individual memory cells then determine the function of the FPGA circuitry of the IC.
The initial contents of block RAMs of a circuit design are specified by the configuration data that is loaded into the IC. Thus, any change to the contents of the block RAMs upon implementation of the circuit design within the IC must be updated in the configuration data loaded into the IC.